package cn.iocoder.yudao.module.trade.dal.dataobject.order;

import cn.iocoder.yudao.framework.common.enums.metal.MetalTypeEnum;
import cn.iocoder.yudao.framework.common.enums.trade.TransactionTypeEnum;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 贵金属交易订单 DO
 *
 * @author 芋道源码
 */
@TableName("trade_order")
@KeySequence("trade_order_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class TradeOrderDO extends BaseDO {

    /**
     * 订单编号（时间戳+用户ID哈希）
     */
    @TableId(type = IdType.INPUT)
    private String orderNo;
    /**
     * 订单类型
     * 枚举 {@link TransactionTypeEnum}
     */
    private Integer orderType;
    /**
     * 贵金属类型
     * 枚举 {@link MetalTypeEnum}
     */
    private Integer metalType;
    /**
     * 用户编号
     */
    private Long userId;
    private String userName;
    /**
     * 用户备注
     */
    private String userRemark;
    /**
     * 订单状态
     */
    private Integer status;
    /**
     * 商家备注
     */
    private String remark;
    /**
     * 支付订单编号
     */
    private Long payOrderId;
    /**
     * 支付状态
     */
    private Integer payStatus;
    /**
     * 结算时间
     */
    private LocalDateTime settleTime;
    /**
     * 结算方式
     */
    private Integer settleMethod;
    /**
     * 订单取消时间
     */
    private LocalDateTime cancelTime;
    /**
     * 下单重量
     */
    private BigDecimal weight;
    /**
     * 旧料重量(仅在旧料兑换)
     */
    private BigDecimal exchangeWeight;
    /**
     * 折料后重量
     */
    private BigDecimal convertWeight;
    /**
     * 旧料成色
     */
    private BigDecimal purity;
    /**
     * 下单价格
     */
    private BigDecimal orderPrice;
    private BigDecimal metalPrice;
    /**
     * 结算价格
     */
    private BigDecimal settlePrice;
    private BigDecimal settlePriceTotal;
    /**
     * 优惠金额
     */
    private BigDecimal discountPrice;
    /**
     * 扣项费用
     */
    private BigDecimal deductPrice;
    /**
     * 定金金额
     */
    private BigDecimal receivePrice;
    private BigDecimal receiveDeposit;
    private BigDecimal receiveDepositAdd;
    private BigDecimal receiveDelayFee;
    private BigDecimal receiveProcessFee;
    private BigDecimal receiveAdditionalFee;
    /**
     * 毛利润
     */
    private BigDecimal grossProfit;
    /**
     * 所获积分
     */
    private Integer point;

    /**
     * 定金参数/g
     */
    private BigDecimal depositPriceConf;
    /**
     * 免息天数
     */
    private Integer interestFreeDays;
    /**
     * 延期费用（参数）
     */
    private BigDecimal delayFeeConf;
    /**
     * 工费参数
     */
    private BigDecimal processConf;
    /**
     * 积分参数
     */
    private String pointConf;
    /**
     * 结算参数
     */
    private String settleConf;
    /**
     * 配送方式
     */
    private Integer deliveryType;
    /**
     * 自提核验码
     */
    private String pickUpVerifyCode;
    private LocalDateTime expireTime;
    private Boolean isStore;

}